One of the problems that confront network and computer administrators is how to efficiently configure new features or revise existing configurations of features. In most cases, and particularly when dealing with revisions to the configuration of existing features or enabling new features, configuring devices involves laboriously hand-coding device configurations.
This problem is exacerbated when multiple devices need to be configured. It is not uncommon in modern networks for different models or brands of devices to coexist, or to have different versions of software executing on identical models. Unfortunately, it is not uncommon for different device models (or even the same model with different versions of its software) to require differences in the commands used to configure the same or equivalent functionality.
Device vendors face similar issues in developing and updating management applications. Such applications, used to configure new features available with newer models or newer software, to add management support for new products, and to provide support for existing and legacy devices, need to be constantly updated and modified to remain useful. Often, new features or new types of devices require major changes to the application, if not an entirely new application, to handle differences in the commands used to configure the devices.